package org.wesc.boot.dao.querymapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Repository;
import org.wesc.boot.dao.entity.Menu;
import org.wesc.boot.dao.entity.Role;
import org.wesc.boot.dao.model.UserResultModel;

import java.util.List;
import java.util.Map;

/**
 * @author Wesley
 */
@Repository
public interface UserQueryMapper {

    /**
     * 查询用户角色
     *
     * @param userId 用户ID
     * @return 用户角色列表
     */
    List<Role> findUserRoles(long userId);

    /**
     * 查询用户所有菜单(非构建菜单树)
     *
     * @param userId 用户ID
     * @return 菜单列表
     */
    List<Menu> findAllUserMenus(long userId);

    /**
     * 查询所有用户详情
     *
     * @param page 分页信息
     * @param map 条件map
     */
    IPage<UserResultModel> findUserDetail(Page page, Map<String, Object> map);

    /**
     * 依据用户名获取单个用户详情
     *
     * @param username 用户名
     * @return 用户信息
     */
    UserResultModel findDetailByUsername(String username);

    /**
     * 依据邮箱获取单个用户详情
     *
     * @param email 邮箱
     * @return 用户信息
     */
    UserResultModel findDetailByEmail(String email);

    /**
     * 依据手机号获取单个用户详情
     *
     * @param mobile 手机号
     * @return 用户信息
     */
    UserResultModel findDetailByMobile(String mobile);

}
